extensions/gegl-fixups.c (conv_rgbAF_sdl32) Make un-pre-multiplication
authorMartin Nordholts <martinn@src.gnome.org>
Sun, 16 Nov 2008 12:12:19 +0000 (12:12 +0000)
committerMartin Nordholts <martinn@src.gnome.org>
Sun, 16 Nov 2008 12:12:19 +0000 (12:12 +0000)
* extensions/gegl-fixups.c (conv_rgbAF_sdl32)
* babl/base/model-gray.c (premultiplied_to_non_premultiplied):
Make un-pre-multiplication with close-to-zero alpha values result
in complete black instead of a bit brigher than black.

svn path=/trunk/; revision=355

ChangeLog
babl/base/model-gray.c
extensions/gegl-fixups.c

index 87a957e5abdb7600998fba6a486378bdb6051c02..4592d97b022cb9ac45fe9bd22bedc85bb8fd2e2f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-16  Martin Nordholts  <martinn@svn.gnome.org>
+
+       * extensions/gegl-fixups.c (conv_rgbAF_sdl32)
+       * babl/base/model-gray.c (premultiplied_to_non_premultiplied):
+       Make un-pre-multiplication with close-to-zero alpha values result
+       in complete black instead of a bit brigher than black.
+
 2008-11-08  Øyvind Kolås  <pippin@gimp.org>
 
        * extensions/gegl-fixups.c: (conv_rgbAF_lrgba8): use the lookup tables
index 4ca0f88193d2bef19e19826c1fea9fa46bb0cf07..b7004d4e08dc56acb985b983d5dc57ae70a12143 100644 (file)
@@ -414,7 +414,7 @@ premultiplied_to_non_premultiplied (int    src_bands,
             }
           else
             {
-              *(double *) dst[band] = 0.001;
+              *(double *) dst[band] = 0.0;
             }
         }
       *(double *) dst[dst_bands - 1] = alpha;
index 20948cb9a0437bf7380866dff693c9c03542fa13..9bc6b8b3656790cde2121706d68d5bda7327ae4b 100644 (file)
@@ -333,18 +333,14 @@ conv_rgbAF_sdl32 (unsigned char *srcc,
     {
       int   i;
       float alpha = src[3];
-      if (alpha < 0.0001)
-        alpha = 0.0001;
       for (i = 0; i < 3; i++)
         {
           float ca = src[i];
-          float c;
           int   ret;
-          c = ca / alpha;
-          if (alpha == 0.0)
+          if (alpha < 0.0001)
             ret = 0;
           else
-            ret = table_F_8g[gggl_float_to_index16 (c)];
+            ret = table_F_8g[gggl_float_to_index16 (ca / alpha)];
           if (ret <= 0)
             dst[i] = 0;
           else if (ret > 255)